<?php
if (!defined('IN_SYS')) {
    header('HTTP/1.1 403 Forbidden');
    exit(0);
}

include_once './inc/random.inc.php';
include_once './inc/user.inc.php';

/** 
* 登录类
* 
* 包括密码校验和设置登录状态两部分
* @author xzqiapchu(www.xzzhangqiaochu.top)
* @version v1.0.0.200131_beta
*/
class Login
{
    /**
    * 生成key
    * 
    * 保存在session中，为密码校验所用
    * @return string 生成的key
    */
    static function setKey()
    {
        $key = Random::getHex(16); //生成key
        $_SESSION['key'] = $key; //储存key
        return $key;
    }

    /**
    * 删除key
    *
    * 删除保存在session中的key
    * @return void
    */
    static function delKey()
    {
        unset($_SESSION['key']);
    }

    /**
    * 检查密码是否正确
    * 
    * 与客户端进行相同的不可逆运算
    * @param $uname 用户名
    * @param $pwd_in 客户端计算的验证串
    * @return boolean
    */
    static function checkPwd($uid, $pwd_in)
    {
        if (empty($_SESSION['key']))
            return false; //key不存在（调用此函数前请先写错误处理，此处再次判断以防程序报错）
        $pwd_ex = md5(User::getPwd($uid) . $_SESSION['key']); //与客户的进行相同的加密过程
        if ($pwd_in == $pwd_ex) //比较密文是否一致
            return true;
        else
            return false;
    }

    /**
    * 登录
    *
    * 只是设置登录状态，不包含密码检验
    * @param string $uid 用户ID
    * @param boolean $remember 是否记住密码
    * @return void
    */
    static function loginOn($uid, $remember = false)
    {
        // if ($remember == true) {
        //     //是否勾选记住密码

        // } else {

        // }
        $_SESSION['uid'] = $uid;
        $_SESSION['status'] = 'loginon';
    }

    /** 
    * 退出登录
    *
    * 更新session中的登录状态
    * @return false
    */
    static function loginOut()
    {
        $_SESSION['status'] = 'loginout';
    }

    /** 
    * 检查登录状态
    * 
    * 通过session中的登录状态来判断
    * @return boolean
    */
    static function isLogin()
    {
        if (empty($_SESSION['status']) || $_SESSION['status'] != 'loginon')
            return false;
        else
            return true;
    }
}
